package com.app.util.tools;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import com.app.conf.info.Conf;

/**
 * 扫描工具类
 **/
public class ScanTools 
{
    private String basePath;

    private List<Class<?>> classeList = new ArrayList<Class<?>>();

    public ScanTools() 
    {
        if(null != System.getProperty("dev") && System.getProperty("dev").equals("true"))
        {
            basePath = System.getProperty("user.dir")+File.separator+Conf.target+File.separator+Conf.classpath+File.separator;
        }
        else
        {
            basePath = System.getProperty("user.dir")+File.separator+Conf.classpath+File.separator;
        }
    }

    /**
     **加载class文件
     * @param basePackage 包名     
     **/
    public void loadClassFile(String basePackage) throws Exception
    {
        File file = new File(basePath + basePackage.replace(".", File.separator));

        for (File itemFile : file.listFiles())
        {
            // 如果是class文件
            if (itemFile.isFile() && itemFile.getName().indexOf(".class") != -1)
                classeList.add(Class.forName(basePackage + "." + itemFile.getName().replace(".class", "")));

            // 如果是文件夹继续向下扫描
            if (itemFile.isDirectory())
                loadClassFile(basePackage + "." + itemFile.getName());
        }
    }

    public List<Class<?>> getClasseList()
    {
        return classeList;
    }
}